package com.zj.study.utils.util;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * <p>距离计算工具类<p/>
 *
 * @author 赵赳
 * @since 2022/9/22 14:33
 */
public class DistanceUtils {

  /**
   * 地球半径,单位 km
   */
  private static final double EARTH_RADIUS = 6378.137;

  /**
   * 根据经纬度，计算两点间的距离
   *
   * @param longitude1 第一个点的经度
   * @param latitude1  第一个点的纬度
   * @param longitude2 第二个点的经度
   * @param latitude2  第二个点的纬度
   * @return 返回距离 单位千米
   */
  public static double getDistance(double longitude1, double latitude1, double longitude2,
      double latitude2) {
    // 纬度
    double lat1 = Math.toRadians(latitude1);
    double lat2 = Math.toRadians(latitude2);
    // 经度
    double lng1 = Math.toRadians(longitude1);
    double lng2 = Math.toRadians(longitude2);
    // 纬度之差
    double a = lat1 - lat2;
    // 经度之差
    double b = lng1 - lng2;
    // 计算两点距离的公式
    double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
        Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(b / 2), 2)));
    // 弧长乘地球半径, 返回单位: 千米
    s = s * EARTH_RADIUS;
    return s;
  }


  public static void main(String[] args) {
    //double d = getDistance(113.915157, 22.571142, 113.91677000, 22.58223000);
    //System.out.println(d);
    //
    //double a = 2;
    //
    //boolean result = d < a;
    //System.out.println("result = " + result);

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
    var datetime = dtf.format(LocalDateTime.now());
    System.out.println("datetime = " + datetime);

  }


}
